{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1c88b0e0",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入相关包\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from pylab import *\n",
    "from matplotlib.ticker import MultipleLocator\n",
    "from sklearn import datasets, ensemble\n",
    "from sklearn.inspection import permutation_importance\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ed121aff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>F_1</th>\n",
       "      <th>F_2</th>\n",
       "      <th>F_3</th>\n",
       "      <th>F_4</th>\n",
       "      <th>F_5</th>\n",
       "      <th>F_6</th>\n",
       "      <th>F_7</th>\n",
       "      <th>F_8</th>\n",
       "      <th>F_9</th>\n",
       "      <th>F_10</th>\n",
       "      <th>...</th>\n",
       "      <th>F_26</th>\n",
       "      <th>F_27</th>\n",
       "      <th>F_28</th>\n",
       "      <th>F_29</th>\n",
       "      <th>F_30</th>\n",
       "      <th>F_31</th>\n",
       "      <th>F_32</th>\n",
       "      <th>F_33</th>\n",
       "      <th>F_34</th>\n",
       "      <th>F_35</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.711</td>\n",
       "      <td>-0.696</td>\n",
       "      <td>-0.794</td>\n",
       "      <td>-0.727</td>\n",
       "      <td>-0.747</td>\n",
       "      <td>-0.792</td>\n",
       "      <td>1.539</td>\n",
       "      <td>2.433</td>\n",
       "      <td>-0.136</td>\n",
       "      <td>1.295</td>\n",
       "      <td>...</td>\n",
       "      <td>0.093</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.073</td>\n",
       "      <td>0.344</td>\n",
       "      <td>0.006</td>\n",
       "      <td>-0.446</td>\n",
       "      <td>-0.502</td>\n",
       "      <td>-0.456</td>\n",
       "      <td>-0.457</td>\n",
       "      <td>-0.830</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.909</td>\n",
       "      <td>-0.903</td>\n",
       "      <td>-0.947</td>\n",
       "      <td>-0.844</td>\n",
       "      <td>-0.856</td>\n",
       "      <td>-0.908</td>\n",
       "      <td>-0.371</td>\n",
       "      <td>0.990</td>\n",
       "      <td>-0.935</td>\n",
       "      <td>0.479</td>\n",
       "      <td>...</td>\n",
       "      <td>0.098</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.055</td>\n",
       "      <td>0.298</td>\n",
       "      <td>0.007</td>\n",
       "      <td>-0.523</td>\n",
       "      <td>-0.558</td>\n",
       "      <td>-0.533</td>\n",
       "      <td>0.113</td>\n",
       "      <td>-0.887</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.920</td>\n",
       "      <td>-0.925</td>\n",
       "      <td>-0.923</td>\n",
       "      <td>-0.852</td>\n",
       "      <td>-0.853</td>\n",
       "      <td>-0.915</td>\n",
       "      <td>-0.334</td>\n",
       "      <td>0.792</td>\n",
       "      <td>-0.532</td>\n",
       "      <td>0.334</td>\n",
       "      <td>...</td>\n",
       "      <td>0.086</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.067</td>\n",
       "      <td>0.324</td>\n",
       "      <td>0.006</td>\n",
       "      <td>-0.535</td>\n",
       "      <td>-0.564</td>\n",
       "      <td>-0.540</td>\n",
       "      <td>0.367</td>\n",
       "      <td>-1.021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.926</td>\n",
       "      <td>-0.931</td>\n",
       "      <td>-0.943</td>\n",
       "      <td>-0.837</td>\n",
       "      <td>-0.850</td>\n",
       "      <td>-0.907</td>\n",
       "      <td>-0.993</td>\n",
       "      <td>-0.006</td>\n",
       "      <td>-0.826</td>\n",
       "      <td>0.391</td>\n",
       "      <td>...</td>\n",
       "      <td>0.091</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.076</td>\n",
       "      <td>0.276</td>\n",
       "      <td>0.010</td>\n",
       "      <td>-0.534</td>\n",
       "      <td>-0.554</td>\n",
       "      <td>-0.521</td>\n",
       "      <td>0.550</td>\n",
       "      <td>-0.211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.750</td>\n",
       "      <td>-0.764</td>\n",
       "      <td>-0.818</td>\n",
       "      <td>-0.749</td>\n",
       "      <td>-0.764</td>\n",
       "      <td>-0.816</td>\n",
       "      <td>1.116</td>\n",
       "      <td>1.447</td>\n",
       "      <td>-0.547</td>\n",
       "      <td>0.939</td>\n",
       "      <td>...</td>\n",
       "      <td>0.099</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.079</td>\n",
       "      <td>0.328</td>\n",
       "      <td>0.008</td>\n",
       "      <td>-0.468</td>\n",
       "      <td>-0.500</td>\n",
       "      <td>-0.419</td>\n",
       "      <td>-0.236</td>\n",
       "      <td>0.644</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     F_1    F_2    F_3    F_4    F_5    F_6    F_7    F_8    F_9   F_10  ...  \\\n",
       "0 -0.711 -0.696 -0.794 -0.727 -0.747 -0.792  1.539  2.433 -0.136  1.295  ...   \n",
       "1 -0.909 -0.903 -0.947 -0.844 -0.856 -0.908 -0.371  0.990 -0.935  0.479  ...   \n",
       "2 -0.920 -0.925 -0.923 -0.852 -0.853 -0.915 -0.334  0.792 -0.532  0.334  ...   \n",
       "3 -0.926 -0.931 -0.943 -0.837 -0.850 -0.907 -0.993 -0.006 -0.826  0.391  ...   \n",
       "4 -0.750 -0.764 -0.818 -0.749 -0.764 -0.816  1.116  1.447 -0.547  0.939  ...   \n",
       "\n",
       "    F_26  F_27   F_28   F_29   F_30   F_31   F_32   F_33   F_34   F_35  \n",
       "0  0.093   0.0  0.073  0.344  0.006 -0.446 -0.502 -0.456 -0.457 -0.830  \n",
       "1  0.098   0.0  0.055  0.298  0.007 -0.523 -0.558 -0.533  0.113 -0.887  \n",
       "2  0.086   0.0  0.067  0.324  0.006 -0.535 -0.564 -0.540  0.367 -1.021  \n",
       "3  0.091   0.0  0.076  0.276  0.010 -0.534 -0.554 -0.521  0.550 -0.211  \n",
       "4  0.099   0.0  0.079  0.328  0.008 -0.468 -0.500 -0.419 -0.236  0.644  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_bank = pd.read_csv(\"./dataset/train_90.csv\") # 读取文件\n",
    "X=df_bank.iloc[:,2:-2]\n",
    "y=df_bank['active_index']\n",
    "X.head() #显示新的特征集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5b0e01e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据集准备，将数据集分为训练集和测试集\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    X, y, test_size=0.1, random_state=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "1d30dfdd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GradientBoostingRegressor(max_depth=6, min_samples_split=5)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GradientBoostingRegressor</label><div class=\"sk-toggleable__content\"><pre>GradientBoostingRegressor(max_depth=6, min_samples_split=5)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "GradientBoostingRegressor(max_depth=6, min_samples_split=5)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 定义模型参数进行训练\n",
    "params = {\n",
    "    \"n_estimators\": 100,\n",
    "    \"max_depth\": 6,\n",
    "    \"min_samples_split\": 5,\n",
    "    \"learning_rate\": 0.1,\n",
    "}\n",
    "reg = ensemble.GradientBoostingRegressor(**params)\n",
    "reg.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c16ded58",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x22e581c1400>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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/AH2rj/i+uuvp6SkpOeRnJy8v00RERGRg9R+L29dsmQJ5eXlTJ8+nbq6OlpaWrBtm/Ly8p5jysvLKSoq6pOGioiIyOCz30Fj+fLlPV/fd999vPLKK9xzzz0cccQRvPrqq8yePZt77rmHhQsX9klDRUREZPDp84JdDz74IN/85jdpbGxk5MiR/PWvf+3rjxAREZFBwjLGmIFuBEBRUdFuJ46KiIjIwWlvf79VGVRERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGJGQUNERERiRkFDREREYkZBQ0RERGLmgILG4sWLmTJlClOmTOGyyy4jHA6zZs0ajj32WCZMmMAFF1xAa2trX7VVREREBpn9DhpvvfUW9957L6tWreLDDz/EdV1+97vfcckll3Dbbbexdu1aJk2axE9/+tO+bK+IiIgMIvsdNDIyMrj99ttJSkrCsiymTZvGBx98QGNjI7NnzwbgiiuuYMmSJX3WWBERERlc9jtojB07tidQVFVVcfvt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NpmOjo7d/hyfe+655r777jPGGHP33XebL3/5yzFp0yHbo7F8+XLmzZtHTk4OwWCQSy+9lCVLlgx0sw4JGRkZ3H777SQlJWFZFtOmTeODDz6gsbGR2bNnA3DFFVfofveRuro6fvjDH3LTTTcBsHXrVt3rPvb4449z0UUXUVRURDAYZMmSJaSnpzNq1CjGjRuHZVlcfvnlus99wPM8fN+nvb0d13VxXZdgMKif6T7yxz/+kTvuuIOCggIA3nrrrV3+HEciEV5++WW+8pWvAHDppZfy9NNPE4lE+rxNh2zQKC0tpbCwsOf7goIClbjtI2PHju35hVBVVcXtt9/O+PHjdb9j5KqrruJnP/sZGRkZgH62Y+HTTz/F930WLFjA1KlTueOOOygrK9N9joGUlBRuueUWJkyYQGFhIcOHDycUCule95F7772Xk046qef73f2+qK2tJSUlhWAwCEAgECA1NZXq6uo+b9MhGzR839/pOds+ZC93QGzevJm5c+fyzW9+k5NPPnmn13W/D9xdd93F0KFDmT9/fs9z+tnue67r8txzz/HnP/+ZVatW8dZbb7Fp06adjtN9PnAffPAB99xzD1u2bKGsrAzHcXj++ed3Ok73um/s7vfFrp7vfq2vBfr8jAeJoqIiXn311Z7vy8vLKSoqGsAWHVref/99Fi5cyI033sh1111HcXEx5eXlPa/rfveNJUuWUF5ezvTp06mrq6OlpQXbtnWv+1h+fj7z588nNzcXgPPOO49HH30Uy7J6jtF97hvLli3rda8XLVrEL37xC/1Mx0hRUdEu721OTg5NTU24rksgEMB1XZqbm8nKyurzNhyykfGUU07hxRdfpLKykkgkwv3338/ChQsHulmHhOrqahYsWMBvf/tbrrvuOgCGDRtGYmJiT7i75557dL/7wPLly1mzZg3vv/8+N998M+eccw733HOP7nUfO+uss1i+fDn19fV4nseyZcu46KKLWL9+PWvXrgWiXdK6zwdu2rRpLFu2jJaWFowxLF26lJNOOkk/0zFyzDHH7PLnOBgMMnv2bB544AEAHnjgAebMmdMzlNKnYjLF9CDx8MMPmylTppixY8eaG264YaCbc8i46aabTEJCgpk2bVrP46abbjIffvihOfbYY83EiRPNmWeeaRoaGga6qYeUe++9t2fVie5137v77rvN5MmTzbhx48zVV19tXNc1r7zyipk+fboZP368+drXvmY6OzsHupmHhFtvvdWMGzfOTJkyxSxatMi0trbqZ7qPDR8+3GzatMkYY3b7c1xcXGzmz59vJk2aZE488USzZcuWmLRFe52IiIhIzByyQyciIiIy8BQ0REREJGYUNERERCRmFDREREQkZhQ0REREJGYUNERERCRmFDREREQkZhQ0REREJGb+P0Jov7u72yuHAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x640 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化训练集和测试集数据\n",
    "ytrain_pre = reg.predict(X_train)\n",
    "ytest_pre = reg.predict(X_test)\n",
    "\n",
    "fig,ax = plt.subplots(figsize=(8, 8), dpi= 80)\n",
    "plt.rcParams['font.sans-serif'] = ['Arial'] #字体均为 Arial\n",
    "plt.rcParams['axes.unicode_minus']=False\n",
    "\n",
    "scatter1 = plt.scatter(x=y_train, y=ytrain_pre, s=80, marker='s',c='#FFBCDE' , alpha=0.8, label='train data', linewidths=0.3, edgecolor='#17223b')\n",
    "scatter2 = plt.scatter(x=y_test, y=ytest_pre,s=80, marker='s',c='#00C8F4' ,alpha=0.8, label='test data', linewidths=0.3, edgecolor='#17223b')\n",
    "ax.plot([0,1],[0,1],'--',c='black',alpha=0.3)\n",
    "plt.legend(loc='upper left',fontsize=20, frameon=True ,labelspacing=0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "8e45b115",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\anaconda\\envs\\PyTorch\\lib\\site-packages\\sklearn\\utils\\deprecation.py:101: FutureWarning: Attribute `loss_` was deprecated in version 1.1 and will be removed in 1.3.\n",
      "  warnings.warn(msg, category=FutureWarning)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAHqCAYAAADLbQ06AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHWklEQVR4nO3deVwU9f8H8Ndys5xyiQIiHmEeeWIe4JGmpWaleZQafDM18/qqpWmZ8sui2yy1NIsyMbPwCE3zxMIrBY9UTE1QFLwgOQWB/fz+mO9urHIs67IzC6/n4zGPmZ2ZnXnvZL78zHxmRiWEECAiIiJFspK7ACIiIqoYg5qIiEjBGNREREQKxqAmIiJSMAY1ERGRgjGoiYiIFIxBTUREpGAMaiIiIgVjUBMRESkYg5pIgXr16gWVSqUbrKys4OLigk6dOuHTTz9FSUmJSfcXHx8PlUqF+Ph4k26XiO6fjdwFEFH52rdvj2XLlgEASktLkZWVha1bt2L69On4/fff8cMPP8DKyjT/1u7QoQMOHDiAli1bmmR7RGQ6Kj7rm0h5evXqBQDltnA//fRTTJs2DatXr8aoUaPMWxgRmR1PfRNZmMmTJ8PPzw9ffPGFbt7KlSvRqlUr2Nvbo1GjRliwYAFKS0sBAGvWrIFKpcLJkyf1trNx40aoVCocPXq03FPfGzduRFhYGFxcXGBvb48WLVpg6dKluuXa7+zatQv9+vWDWq2Gr68vZs+erds3ANy5cwfz5s1DkyZN4OjoiNatW+Pbb7/Vq2XTpk3o1KkTHBwc4Ovri2nTpiE/P9+Uh43IYjGoiSyMlZUV+vTpg0OHDqGkpARRUVEYP348+vbti7i4OEyePBnvvfcexo8fDwB46qmn4OzsjLVr1+pt5/vvv0erVq3Qvn37e/axZcsWPP300+jYsSM2bdqE2NhYNGnSBJMnT8ahQ4f01h01ahTCwsKwefNmPPfcc3j//fexcuVKveUfffQRXnzxRWzevBn9+/dHREQEvv/+ewDSPySeeuoptGjRAhs3bsSCBQvw3Xff4cknnwRP+BEBEESkOD179hQ9e/ascPmsWbMEAJGamiocHR3FSy+9pLd85cqVAoA4efKkEEKI8PBw0bRpU93y3Nxc4ejoKN59910hhBB79uwRAMSePXuEEEK8//77Ijw8XG+bmZmZAoCIiorS+84bb7yht15QUJAYNGiQEEKIP//8UwAQn3zyid46Q4YMEePGjRMajUb4+/uLxx57TG/5zp07BQCxefPmSo4SUd3AzmREFkj8r6W5d+9e3L59G4MHD9brCf7EE08AAHbs2IFWrVphzJgx+Pbbb3H48GGEhIRg06ZNKCoqqvAa96uvvgoAyMvLw19//YXz58/jyJEjAICioiK9dbt27ar32d/fX3faOiEhAQAwZMgQvXViY2MBAGfOnMHly5cxd+5cvfp79uwJV1dX7NixAwMHDqzGkSGqfXjqm8gCXb58GY6OjrC2tgYADBgwALa2trqhfv36AID09HQAQO/eveHn56c73fz999+jV69e8Pf3L3f7N2/exNChQ+Hm5oaHH34YCxYsQHZ2NgDcczparVbrfbaysoJGowEAZGZmAgB8fHzK3Y92+csvv6xXv62tLXJycnT1E9VlbFETWZiSkhLEx8eje/fucHd3BwDExMTggQceuGddbWBbWVlh1KhRWLNmDV5//XVs374dK1asqHAfzz33HM6cOYNdu3aha9eusLe3R0FBAb788stq1aqt78aNG3r/KDhz5gwyMzN1yz/44ANdT/ey6tWrV639EdVGbFETWZjly5cjIyMDEydORJcuXWBnZ4crV66gU6dOusHGxgZz5sxBSkqK7ntjxozB5cuXERkZCRsbGwwdOrTCfSQkJGDo0KHo1asX7O3tAQBbt24FAF1r2RChoaEAgLi4OL35s2fPxrRp09CiRQv4+PggJSVFr34/Pz+89tprOHr0qMH7Iqqt2KImUqicnBwcPHgQgBSON2/exK+//orly5dj9OjRuuu+s2bNwrx585CTk4NevXrhypUrmDdvHlQqFdq2bavbXuvWrdGuXTssW7YMw4cPh4uLS4X77ty5M2JiYtCxY0f4+/tj3759iIqKgkqlqtZtU23btsWwYcPw6quvoqCgAO3atcPWrVsRFxeH9evXw9raGm+//TYmTJgAa2trPPHEE7h16xbeeustXL58GR07djTy6BHVInL3ZiOie/Xs2VMA0A0qlUq4urqK7t27ixUrVgiNRqO3/tKlS0XLli2FnZ2dqF+/vhg1apS4ePHiPdv96KOPBACxZcsWvfl39/pOTU0VgwYNEm5ubsLNzU2EhISI1atXi8cee0yEhISU+52ytZftsV5UVCTmzJkj/P39hYODg2jfvr2IjY3V+84PP/wgOnbsKOzt7YWnp6cYPHiwOHHihJFHj6h24ZPJiIiIFIzXqImIiBSMQU1ERKRgDGoiIiIFY1ATEREpGIOaiIhIwRjURERECmaxDzzRaDRIT0+Hi4sLVCqV3OUQEREZTAiB3NxcNGzYEFZWlbeZLTao09PTERAQIHcZRERERktLS6vw5ThaFhvU2scfpqWlwdXVVeZqiIiIDJeTk4OAgIBKH+WrZbFBrT3d7erqyqAmIiKLZMilW3YmIyIiUjAGNRERkYIxqImIiBTMYq9RExEZorS0FMXFxXKXQXWMra0trK2tTbItBjUR1UpCCFy9ehW3bt2SuxSqo9zd3eHr63vfz/pgUBNRraQNaR8fH6jVaj4YicxGCIGCggJcv34dANCgQYP72h6DmohqndLSUl1Ie3p6yl0O1UGOjo4AgOvXr8PHx+e+ToOzMxkR1Traa9JqtVrmSqgu0/75u98+EgxqIqq1eLqb5GSqP38MaiIiIgVjUBMRKUBERARUKlWFQ3x8vFHbFUJg2bJlla6zY8cOdO/eHWq1Gm5ubnj88ceRmJho8D5yc3OxatWqCpf36tVL77eo1Wp06NABMTExBu+jMqmpqVCpVEhNTTXJ9pSGQU1EpACLFy9GRkYGMjIy8Mknn8Df31/3OSMjA926dTNqu7/99hsmTZpU4fLExEQ8+eSTGDVqFE6cOIF9+/YhMDAQvXv3Njj4Pv74Y3z99deVrjNz5kxkZGQgPT0dSUlJGDFiBCIiIvDNN99U49eULyAgABkZGbX2jYrs9U1EpABubm5wc3PTTVtbW8PX1/e+tyuEqHR5TEwM+vXrh5dfflk37/PPP8fu3buxdu1avPbaa/e9DwBwdnbW/Z4GDRqgRYsWyMvLw6xZszBy5Eg4ODhUuY2KmOpYKRVb1EREFiAtLQ2DBw+GWq1G48aNERkZidLSUgBSr+Jx48bBy8sLzs7OGDx4MK5cuYLU1FT07t0bACo8fW5lZYUTJ07o7vnVrrtjxw6MHz9eN2/Dhg1o2bIl1Go1OnfujL179wIAvvnmG0RGRmLv3r3V7jw1fvx43LhxAwkJCQCAoqIiTJs2DV5eXvDy8sLo0aORlZUFABg5ciTCw8P1vv/cc8/hxRdfvOfU9+nTp9G/f3+4uLjAwcEBYWFhSE5OBgDEx8ejcePG+Pzzz+Hn5wcnJyeMGTMGRUVFuu2uXr0aLVq0gFqtRrdu3XD06FHdsuXLlyMoKAjOzs7o1asX/vzzz2r9ZmMwqAEgMxPYtw9ISpK7EiKqCUIA+fnyDAa0NqsuX2DIkCHw8fHB0aNH8c0332DNmjV45513AABLlizB3r17sX37dhw5cgS5ubmYPn06AgICEBsbCwAVnj4fO3Ysrl+/jsDAQDz55JP47LPP8PfffyMwMBAeHh4AgOPHjyM8PBxvvPEGTpw4gdGjR+Pxxx/H+fPnMWLECMycORNdu3ZFRkZGtX5XQEAAnJ2dcfr0aQDA3LlzcfjwYfzyyy/Ys2cPsrOzMWzYMABSUMfFxeludSoqKsLmzZsxcuRIvW1qNBo88cQTCAoKwrFjx7B//36UlJRg9uzZunXS09Px008/Ydu2bVi/fj1iY2N119h//fVXvPDCC/jvf/+LEydOoFOnThg0aBDu3LmDuLg4LFiwAJ999hmOHj2KsLAw9O7dG//880+1fne1CQuVnZ0tAIjs7Oz739jq1UIAQvTte//bIiLZ3b59W5w+fVrcvn1bmpGXJ/0/LseQl1ft+qOjo0VgYKDu886dO4W3t7coLS3Vzfv555+Fh4eHEEKIqVOnioceekhkZmYKIYRITU0ViYmJQggh9uzZI6r6q/7UqVNi1KhRws3NTQAQAMSwYcNEfn6+EEKI0aNHixkzZuh9Z8iQIbp58+fPFz179qxw+z179hTz588vd5mfn59YuHChyM/PF3Z2duLEiRO6Zf/884+wsrISJ06cEIWFhcLNzU38+uuvut/v4+MjSkpKREpKigAgUlJSRF5ennj//fdFXpnj/sUXX4gmTZroHY+TJ0/qlj/99NNi3Lhxuunw8HDdsqKiIjFz5kyRkZEhQkNDxaeffqpXf4cOHe6Zp3XPn8MyqpNhbFEDwP+uC4HPBCYiBUpOTkZmZiZcXV3h7OwMZ2dnjBgxAllZWcjMzMT48eORkZEBX19f9OvXD7/88gsefPBBg7ffsmVLrF69Gjdv3sTevXsxceJErF+/HnPmzNHtf8mSJbp9Ozs7Iy4uDmfPnr3v35abmwtXV1dcuHABd+7cQdeuXXX78Pf3h0ajwdmzZ2Fvb4+nnnoK69evBwDExsbimWeeueeJX05OTpg4cSJWrVqFsWPHonv37vjvf/+ru0yg1bx5c920q6urrqX+119/oWPHjrpldnZ2+PDDD+Hr64vk5GTMmjVL7zgcP37cJMehMuxMBgDu7tI4O1vWMoiohqjVQF6efPu+TyUlJWjRogU2bdp0zzI3Nzd4enoiNTUVW7ZswebNmzFnzhysWbMGv/32W5XbfuWVVzBmzBi0bdsWNjY26NGjB3r06AFXV1fExcXp9j979mw8//zzet/VPibTWKmpqcjJyUHr1q1RUlICAEhISICzs7PeevXr1wcgnf6OiIjA4sWL8fPPP2Pjxo33bDMvLw8hISHw8vLC4MGD8eyzz+LMmTP48MMP9dazs7PT+yz+d4nC1ta2wnpLSkrwySefoE+fPnrzXV1dDfvBRmJQA2xRE9V2KhXg5CR3FUYLDg7GpUuX4O3tresZvmPHDnzzzTdYtWoVVq1aBXt7e4wYMQLDhg3DwYMH0bVrV1y/fr3KDl7bt2/XBVBZ7u7u8Pb21u0/JSUFzZo10y2fNWsWHnjgAbz44otGP4Hr66+/hq+vL8LCwnD79m1YW1sjMzMT7dq1AyA9J3vs2LFYtGgRXFxc0LdvX5SWluLjjz+GWq1GWFjYPduMj49Heno6/vzzT9jY2Oh+ozaIq9K8eXMcP35c97m0tBTNmjXD6tWrERwcjMuXL+sdh//85z94+umnMXjwYKOOgSEY1IB+i1oI6X9qIiKF6NevHwIDAzF69Gi88847uHXrFsaPH4++ffvC2toa2dnZePvtt+Hl5YUmTZogJiYG/v7+8PLygtP//oGSmJiIVq1a3XMb1Lx583S3R40aNQp2dnbYt28f3n//fd09ztOnT0dYWBhCQkIwcOBAxMXF4eOPP8bu3bsBSKeb09PTkZqaisaNG5f7G/Ly8nD16lUAwK1bt/Djjz/ivffew1dffQUbGxu4uLhg3LhxmDhxIlasWAEfHx/MmDEDFy9eRFBQEADAxsYGQ4cOxTvvvFPhPxA8PT2Rl5eHjRs3olOnTti5cyeWLFlicKt3ypQp6NevH8LCwtC9e3d8+umn0Gg06NChA2bMmIEXX3wRDzzwALp164YVK1Zg3bp1mDt3rkHbNlqVV7EVyqSdybKz/+34UVBw/9sjIllV1onHEtzdmUwIIf7++28xYMAA4ejoKLy9vcXLL78sCv7391VpaamYNWuWaNCggbC3txfdu3cXSUlJQgghCgsLxaOPPirs7OxEbGxsufvbtGmTCAsLE66ursLBwUF07txZbNiwQW+d77//XgQHBws7Ozvx4IMPinXr1umWnT9/XjRt2lQ4OjqKa9eu3bP9nj176jqpARAeHh6iR48e4ueff9ZbLz8/X0ycOFF4eHgIFxcXMXDgQHHhwgW9dbSdwQ4ePKibV7YzmRBCLFiwQHh7ewsXFxfRvXt38fXXXwuVSiUuX75cbue68PBwvQ5kX331lWjSpIlwdHQUYWFheh3cFi9eLAIDA4WDg4Po2LGj2LVrV7nHVAjTdSZTCWGCewdkkJOTAzc3N2RnZ9//9QGNBrC1lcYZGUAtvnGeqC4oLCxESkoKgoKC7utBGkT3o7I/h9XJMPb6BgArK16nJiIiRWJQazGoiYhIgRjUWrxFi4iIFIhBrcUWNRERKRCDWostaiIiUiAGtRZb1ES1jkajkbsEqsNM9eePDzzRYouaqNaws7ODlZUV0tPT4e3tDTs7O6OfnkVUXUII3LlzBzdu3ICVldU9jyutLga1FlvURLWGlZUVgoKCkJGRgfT0dLnLoTpKrVajUaNGsLK6v5PXDGottqiJahU7Ozs0atQIJSUl97w5iaimWVtbw8bGxiRnchjUWmxRE9U6KpUKtra2lb4RiUjp2JlMiy1qIiJSIAa1ljao2aImIiIFYVBr8dQ3EREpEINai6e+iYhIgRjUWtoWdW4uwB6iRESkEAxqLW1QA0BOjnx1EBERlcGg1rKzAxwdpWlepyYiIoVgUJfF69RERKQwDOqy2PObiIgUhkFdFlvURESkMAzqsvjQEyIiUhgGdVk89U1ERArDoC6Lp76JiEhhGNRlsUVNREQKw6Auiy1qIiJSGAZ1WWxRExGRwjCoy2KLmoiIFIZBXRZb1EREpDAM6rLYoiYiIoVhUJfFFjURESkMg7qssi1qIWQthYiICGBQ69MGdXExcPu2rKUQEREBDGp9Tk6AtbU0zdPfRESkAAzqslSqf69Ts0MZEREpAIP6buxQRkRECsKgvhtv0SIiIgVhUN+NLWoiIlIQBvXd2KImIiIFYVDfjS1qIiJSEAb13diiJiIiBWFQ340taiIiUhAG9d20LWoGNRERKQCD+m489U1ERArCoL4bT30TEZGCMKjvxhY1EREpiKxBnZaWhkGDBsHV1RWNGzfGJ598Imc5EraoiYhIQWzk3Pnw4cMRGBiIxMREnD59Gs899xwCAwPx9NNPy1cUW9RERKQgsrWo//nnHxw8eBBvvPEGmjdvjieffBKPPfYYdu3aJVdJEm2LOi8PKCmRtxYiIqrzZAtqR0dHqNVqREdHo7i4GH/99Rf27duH9u3by1WSRBvUAJCTI18dREREkDGoHRwcsHTpUixfvhyOjo5o0aIFHn/8cYwdO1aukiS2toBaLU3zOjUREclM1s5kycnJeOKJJ3Dw4EFER0fjp59+QkxMTLnrFhUVIScnR2+oMXzoCRERKYRsncl27dqFlStX4vLly3B0dESnTp1w5coVLFy4EKNGjbpn/aioKERGRpqnOHd3ID2dHcqIiEh2srWoExMT0bx5czg6OurmtW/fHhcvXix3/Tlz5iA7O1s3pKWl1VxxvEWLiIgUQrYWdcOGDXH+/HncuXMHdnZ2AIAzZ84gKCio3PXt7e1hb29vnuJ4ixYRESmEbC3qJ554Ara2tnjxxRdx9uxZxMXF4Z133sHUqVPlKulfbFETEZFCyNaidnNzw65duzBt2jSEhITA29sbb7zxBsaPHy9XSf9ii5qIiBRC1ieTtWzZEjt27JCzhPKxRU1ERArBl3KUhy1qIiJSCAZ1ediiJiIihWBQl6dePWn8zz/y1kFERHUeg7o8Hh7SOCtL3jqIiKjOY1CXx9NTGmdmylsHERHVeQzq8jCoiYhIIRjU5dGe+i4sBAoK5K2FiIjqNAZ1eVxcAJv/3WLO69RERCQjBnV5VCqe/iYiIkVgUFdEe/qbQU1ERDJiUFeELWoiIlIABnVFtEHNa9RERCQjBnVF2KImIiIFYFBXhNeoiYhIARjUFWGLmoiIFIBBXRFeoyYiIgVgUFeELWoiIlIABnVFeI2aiIgUgEFdEbaoiYhIARjUFSl7jVqjkbcWIiKqsxjUFdGe+tZogJwceWshIqI6i0FdEQcHQK2Wpnn6m4iIZMKgrgyvUxMRkcwY1JXhvdRERCQzBnVl2KImIiKZMagrw3upiYhIZgzqyrBFTUREMmNQV4ZBTUREMmNQV4adyYiISGYM6srwGjUREcmMQV0ZnvomIiKZMagrw6AmIiKZMagrw2vUREQkMwZ1ZbTXqHNygOJieWshIqI6iUFdmXr1AJVKmmarmoiIZMCgroy1NeDuLk3zOjUREcmAQV0VXqcmIiIZMairwnupiYhIRgzqqvAWLSIikhGDuioMaiIikhGDuiq8Rk1ERDJiUFeF16iJiEhGDOqq8NQ3ERHJiEFdFQY1ERHJiEFdFV6jJiIiGTGoq8Jr1EREJCMGdVXKnvoWQt5aiIiozmFQV0Ub1EVFQEGBvLUQEVGdw6CuirMzYGsrTfM6NRERmRmDuioqFa9TExGRbBjUhuAtWkREJBMGtSEY1EREJBMGtSF4LzUREcmEQW0IXqMmIiKZMKgNwVPfREQkEwa1IRjUREQkEwa1IbRBffOmvHUQEVGdw6A2hI+PNL5+Xd46iIiozmFQG6J+fWl87Zq8dRARUZ3DoDaEr680vnaNL+YgIiKzYlAbQtuivnMHyM6WtxYiIqpTGNSGcHAAXF2l6atX5a2FiIjqFAa1oXidmoiIZMCgNhSDmoiIZMCgNlTZDmVERERmwqA2lLZFzWvURERkRgxqQ/HUNxERyUDWoC4qKsKkSZNQr1491K9fH3PnzoVQ6n3KDGoiIpKBjZw7nzZtGnbv3o1ff/0Vubm5GDlyJAIDAzFhwgQ5yyofr1ETEZEMZGtRZ2Vl4auvvsKXX36Jzp07o0+fPpg5cyYOHTokV0mVY4uaiIhkIFuLOiEhAW5ubujZs6du3muvvSZXOVUr25lMCEClkrceIiKqE2RrUV+4cAGNGzfGqlWr0KJFCzRp0gRvvfUWNBpNuesXFRUhJydHbzArPkaUiIhkIFuLOi8vD+fOncPy5csRHR2NjIwMTJgwAWq1GjNnzrxn/aioKERGRspQ6f84OgIuLkBurnT6291dvlqIiKjOkK1FbWNjg5ycHKxZswZdu3bFkCFD8Prrr2P58uXlrj9nzhxkZ2frhrS0NDNXDHYoIyIis5OtRd2gQQM4ODggMDBQNy84OLjCALa3t4e9vb25yitf/frAuXN86AkREZmNbC3qLl26oLCwEGfPntXNS05ORuPGjeUqqWrs+U1ERGYmW1AHBwdj4MCBiIiIwPHjx/Hrr7/i3XffxcSJE+UqqWoMaiIiMjNZH3gSExODKVOmIDQ0FGq1GpMnT8aUKVPkLKlyvEZNRERmJmtQu7m5YdWqVXKWUD1sURMRkZnxpRzVwTdoERGRmTGoq4MtaiIiMjMGdXWUDWqlvuWLiIhqFQZ1dWiDuqgIMPcjTImIqE5iUFeHWi09RhTgdWoiIjILBnV18To1ERGZEYO6uhjURERkRgzq6uJDT4iIyIwY1NXFFjUREZkRg7q6+NATIiIyIwZ1dbFFTUREZsSgri4GNRERmRGDurrYmYyIiMyIQV1dfIwoERGZEYO6urRBXVjIx4gSEVGNY1BXl1oNODtL0zz9TURENYxBbQxepyYiIjMxOqhLS0uxZcsWLFq0CLdu3cKhQ4eQnZ1tytqUiz2/iYjITGyM+VJaWhr69++PzMxMZGVl4cknn8T777+P/fv3Y/v27WjTpo2p61QWPvSEiIjMxKgW9eTJkxEaGor09HQ4ODgAANauXYtHH30UU6dONWmBisQWNRERmYlRLerffvsNhw4dgrW1tW6era0t5s2bhw4dOpisOMViUBMRkZkY1aJWq9W4Vk5I/fXXX3B1db3vohRP25ksI0PeOoiIqNYzKqhfeuklTJgwAVu2bIEQAmfPnkV0dDTGjRuHsWPHmrpG5fH3l8ZXrshbBxER1XpGnfqeN28e3N3dMXHiRBQUFGDAgAHw8fHBjBkz8Morr5i6RuXRBvXly/LWQUREtZ5KCOOfg1lYWIjS0lKUlJQgOzsbjRo1MmVtlcrJyYGbmxuys7PNf7o9MxPw8pKmCwsBe3vz7p+IiCxadTLMqFPfqamp6Ny5M+bPnw8nJye4ubmhU6dO6Nq1Ky7XhVamhwfwv97uSE+XtxYiIqrVjArqiRMnonHjxpg5c6ZuXnJyMvz9/TFp0iSTFadYKhVPfxMRkVkYdY06ISEBx44dg4+Pj26ep6cn3n77bXTq1MlkxSmanx9w/jyDmoiIapRRLWovLy8cPXr0nvlnzpypG7dnAWxRExGRWRjVop4yZQrGjRuH5ORk3QNOjh8/jkWLFtWNXt8Ag5qIiMzCqKCeMWMGnJycsGLFCrz33nuwtbVF8+bNsWjRIowePdrUNSoTg5qIiMzAqKAGgAkTJmDChAmmrMWyMKiJiMgMjA7qXbt24fDhwyguLsbdt2K/+eab912Y4vHpZEREZAZGBfXMmTOxePFitG3b9p7OYyqVqm4FdUYGUFIC2Bj9bx4iIqIKGZUuX3/9Nb799luMGjXK1PVYDh8fKZxLSqT3UmuDm4iIyISMuj3LxsYGnTt3NnUtlsXKCmjYUJrmdWoiIqohRgX1pEmTMH/+fOTn55u6HsvCDmVERFTDjDr1vXfvXuzfvx8//vgj6tevDzs7O73lFy5cMElxisegJiKiGmZUUEdERCAiIsLEpVggBjUREdUwo4I6PDy8wmXFxcVGF2NxGNRERFTDjArqa9euISoqCqdOnUJpaSkAQAiBoqIiJCcn459//jFpkYrFe6mJiKiGGdWZ7IUXXsC2bdsQEhKChIQEPPzww/D29sYff/yByMhIU9eoXGxRExFRDTMqqPfu3Yvo6Gi88847aNu2LQYNGoR169bh7bffxtatW01do3KVbVFrNPLWQkREtZJRQS2EgJ+fHwCgZcuWSEpKAgAMHz4chw8fNl11SufrC6hUQHExcOOG3NUQEVEtZFRQd+jQAd999x0AoF27dtixYwcAICUl5Z7nftdqtrZSWAM8/U1ERDXCqM5k7777LgYNGgS1Wo3nn38eH3zwAdq0aYNLly7Vnddcavn7S8/7vnwZ6NhR7mqIiKiWMSqou3fvjosXL+L27dvw9PTE4cOHsXHjRnh6emL48OGmrlHZ/P2Bw4fZoiYiohph9CufXF1ddW/O8vPzw6RJk0xWlEXhLVpERFSDDL5GbW1tjevXr0tfsrKCtbV1hUOdwlu0iIioBhncot69ezc8PDwAAHv27KmxgiwOg5qIiGqQwUHds2dP3fS+ffvw7LPPIigoqEaKsigMaiIiqkFG3Z61ZcsWNG/eHCEhIfjoo4+QlpZm6rosR9mgrku3phERkVkYFdT79u3DpUuX8Pzzz2Pz5s1o2rQpQkND8dlnn+HatWumrlHZGjaUxrdvA3XlGedERGQ2KmGCJ5TcuHEDK1euRFRUFG7fvm2WN2jl5OTAzc0N2dnZut7nsvH2Bm7eBI4fBx56SN5aiIhI8aqTYUbfngUAf//9N2JjYxEbG4tjx47hkUcewciRI+9nk5bJ318K6itXGNRERGRSRgV1ZGQk1q9fj9OnTyM0NBQvvPACnnnmGXh6epq6Psvg7w8cO8YOZUREZHJGBfW2bdvwwgsvYPjw4WjQoIGpa7I87PlNREQ1xKigPnDgAAAgNzcXR48eRcuWLVFUVCT/tWK5aIO6Lvd+JyKiGmFUr++ioiKMGzcO9erVQ0hICK5cuYKIiAg89thj+Kcu9nwODJTGqamylkFERLWPUUH96quv4tSpUzh69CgcHR0BSNetb968ialTp5q0QIvQpIk0vnBB3jqIiKjWMerU9/r167Fx40a0adNGN69NmzZYsWIF+vXrZ7LiLEbTptI4LQ24cwews5O3HiIiqjWMalHn5uZCrVbfM1+j0aCkpOS+i7I4Pj6AkxOg0QAXL8pdDRER1SJGBfXgwYMxd+5c5ObmAgBUKhVSUlIwZcoUDBw40KQFWgSV6t/T33//LW8tRERUqxgV1EuWLIGNjQ08PDyQn5+Pjh07omnTpqhXrx4+++wzU9doGXidmoiIaoBR16gzMzMRERGBjh074qGHHsL58+fx2GOPITg42NT1WQ62qImIqAZUK6h3796N6dOn4+TJkyj7iHCVSoWYmBh8/PHHCA0NNXmRFkHboYwtaiIiMiGDT31v374d/fv3R9u2bbF3717cvHkTxcXFyMzMxK5du9CiRQv07dtX9zCU6ho4cCAiIiKM+q4isEVNREQ1wOC3Z4WGhqJ79+547733Klznv//9L86dO4ctW7ZUq4i1a9fi2WefRXh4OL755huDvqOot2cBwNmzQHCw1Ps7N1fqYEZERFSO6mSYwS3q48ePIzw8vNJ1XnzxRSQlJRm6SQBAVlYWXn31VYSEhFTre4oTGCiFc34+cOOG3NUQEVEtYXBQFxQUwMPDo9J1vLy8cKOaIfXKK69gzJgxaNmyZbW+pzj29kBAgDTN099ERGQiBge1EAJWVpWvrlKpYOCZdABS57TffvsN8+bNM/g7isZbtIiIyMSq1et73bp1lZ5Lz87ONnhbhYWFmDBhApYuXap7XnhlioqKUFRUpPuck5Nj8L7MpmlTID6eLWoiIjIZg4O6UaNG+OijjwxazxCRkZHo1KkT+vfvb9D6UVFRiIyMNGhd2bBFTUREJmZwr29TCwoKwtWrV2FtbQ0Autayvb098vLy7lm/vBZ1QECAcnp9A8APPwAjRwKhocDvv8tdDRERKVR1en0b9WQyU4iPj0dxcbHu8+zZswGgwtu/7O3tYW9vb5bajMYWNRERmZhsQR0YGKj32cXFBQDQrFkzOcoxDe3TydLTgdu3AQOuvRMREVXGqJdyUAXq1QPc3KTplBR5ayEiolpBthb13Qx9IpmiaV93efSodPrb0u8NJyIi2bFFbWra09+8RYuIiEyAQW1q7FBGREQmxKA2NbaoiYjIhBjUpsYWNRERmRCD2tS0LeoLFwCNRt5aiIjI4jGoTS0gALCxAYqKgIwMuashIiILx6A2NRsb6d3UAK9TExHRfWNQ1wRepyYiIhNhUNcE9vwmIiITYVDXBG1Qnz8vbx1ERGTxGNQ1oUULaZycLG8dRERk8RjUNeHBB6XxmTNAaam8tRARkUVjUNeExo0BBwfpFq3UVLmrISIiC8agrgnW1v+e/j59Wt5aiIjIojGoa4r29DevUxMR0X1gUNcU7buo2aImIqL7wKCuKWxRExGRCTCoa0rZFrUQ8tZCREQWi0FdU5o1k577nZcHXL4sdzVERGShGNQ1xdYWaN5cmubpbyIiMhKDuiZpr1OzQxkRERmJQV2TtNep2aImIiIjMahrElvURER0nxjUNYk9v4mI6D4xqGtScDCgUgFZWcCNG3JXQ0REFohBXZMcHYGgIGmap7+JiMgIDOqaxg5lRER0HxjUNY0dyoiI6D4wqGsaW9RERHQfGNQ1jS1qIiK6DwzqmqYN6owM4NYtWUshIiLLw6Cuaa6ugJ+fNM3T30REVE0ManMo++ATIiKiamBQmwOvUxMRkZEY1ObQpo00PnZM1jKIiMjyMKjNoWNHaZyUxGd+ExFRtTCozaFVK8DOTur1nZIidzVERGRBGNTmYGf37+nvxER5ayEiIovCoDYX7elvBjUREVUDg9pcyl6nJiIiMhCD2lzKtqjZoYyIiAzEoDaX1q0BW1sgKwu4eFHuaoiIyEIwqM3F3l4Ka4DXqYmIyGAManPidWoiIqomBrU5sec3ERFVE4PanNihjIiIqolBbU5t2gA2NsDNm0BamtzVEBGRBWBQm5ODg/Q4UYDXqYmIyCAManPjdWoiIqoGBrW5MaiJiKgaGNTm1qGDNGaHMiIiMgCD2tzatgWsrYHr14H0dLmrISIihWNQm5ujI9CypTTN099ERFQFBrUctNepjxyRtw4iIlI8BrUcOneWxvv3y1sHEREpHoNaDj16SOMDB4DiYnlrISIiRWNQy+HBBwEPD6CggA8+ISKiSjGo5WBlBYSFSdO//SZvLUREpGgMarloT38zqImIqBIMarlogzohAdBo5K2FiIgUi0Etl3btAGdn4NYt4ORJuashIiKFYlDLxcYG6NZNmubpbyIiqgCDWk68Tk1ERFVgUMupbFDzBR1ERFQOBrWcQkIAe3vg2jXg3Dm5qyEiIgViUMvJweHfx4ny9DcREZWDQS037env33+Xtw4iIlIkWYP6ypUreOaZZ+Dh4QE/Pz/MmDEDhYWFcpZkfuxQRkRElbCRa8dCCDzzzDOoV68efv/9d2RlZeGFF16AtbU1PvjgA7nKMr+uXQFrayA1Fbh0CWjUSO6KiIhIQWRrUf/11184ePAgoqOj0apVK4SFheH//u//sGbNGrlKkoeLC9C+vTTN099ERHQX2YLa19cX27ZtQ/369fXmZ2dny1SRjLSnv3ftkrcOIiJSHNmC2t3dHf3799d91mg0WLJkCfr06VPu+kVFRcjJydEbao3HH5fGv/zC534TEZEexfT6njVrFpKSkvD222+XuzwqKgpubm66ISAgwMwV1qAePaTnfl+7BiQmyl0NEREpiCKCevbs2fjkk0+wevVqtG7dutx15syZg+zsbN2QlpZm5iprkJ0doD27sHmzvLUQEZGiyB7UU6ZMwUcffYTVq1dj6NChFa5nb28PV1dXvaFWGTRIGm/ZIm8dRESkKLIGdWRkJL744gusXbsWI0eOlLMU+T3+OKBSSae+09PlroaIiBRCtqBOTk7GW2+9hddeew2hoaG4evWqbqiT6tf/93Giv/wiby1ERKQYsgX1pk2bUFpaioULF6JBgwZ6Q501cKA05nVqIiL6H5UQlvl+xZycHLi5uSE7O7v2XK8+ehTo0AFQq4HMTOmlHUREVOtUJ8Nk70xGZbRrBzRsCBQUAPHxcldDREQKwKBWEpWKvb+JiEgPg1pptEG9eTNgmVcliIjIhBjUStOnj3RtOjUVOH1a7mqIiEhmDGqlUauBRx6Rpn/+Wd5aiIhIdgxqJXr6aWn8/ffy1kFERLJjUCvR0KHS87///FMaiIiozmJQK1G9esCAAdJ0TIy8tRARkawY1Eo1apQ0XrOG76gmIqrDGNRKNWgQ4OoKpKUBCQlyV0NERDJhUCuVg4N0rRrg6W8iojqMQa1k2tPf69YBRUXy1kJERLJgUCtZr17Ss79v3QK2bpW7GiIikgGDWsmsrYFnn5WmefqbiKhOYlArnfb0d1wckJ0tby1ERGR2DGqla9cOePBB6Rp1bKzc1RARkZkxqJVOpQKef16aXraMb9QiIqpjGNSW4MUXpdu1EhOB/fvlroaIiMyIQW0JvLz+vVa9eLG8tRARkVkxqC3FtGnSeP166WllRERUJzCoLUWbNkDv3kBpKbB0qdzVEBGRmTCoLYm2Vf3ll0BBgby1EBGRWTCoLcmgQUBQEJCVxQegEBHVEQxqS2JtDUyeLE0vXsxbtYiI6gAGtaV54QXAyQk4dQrYtUvuaoiIqIYxqC2Nu7sU1gAQGclWNRFRLcegtkSzZ0sPQElIALZtk7saIiKqQQxqS+Tn9++16tdfBzQaeeshIqIaw6C2VLNnAy4uwNGjwE8/yV0NERHVEAa1pfLyAl55RZqeNw8oKZG3HiIiqhEMaks2fboU2GfPAqtWyV0NERHVAAa1JXNxAebMkaYXLAAKC2Uth4iITI9Bbelefhnw95de1ME3axER1ToMakvn4AAsXChNR0YCFy7IWw8REZkUg7o2eP554JFHgNu3gZde4kNQiIhqEQZ1baBSAcuXS63rHTv4wg4iolqEQV1bNGsGvPmmND19OnDzprz1EBGRSTCoa5NXXgFat5ZCeuZMuashIiITYFDXJra2wMqV0qnwVauArVvlroiIiO4Tg7q2efhhYMoUaXrMGOm2LSIislgM6trovfeADh2AzExg+HDgzh25KyIiIiMxqGsjBwfpRR3u7sDBg8CsWXJXRERERmJQ11ZBQcC330rTixcD69bJWw8RERmFQV2bDR4svQ4TAMaOBU6dkrceIiKqNgZ1bbdwIdCrF5CXB/Trx0eMEhFZGAZ1bWdjI12vbt0aSE8H+vYFrlyRuyoiIjIQg7ou8PQEtm8HmjYFUlKARx/lk8uIiCwEg7quaNAA2LlTeiVmcjLQvz/wzz9yV0VERFVgUNcljRtLL+3w9gaSkoCwMODSJbmrIiKiSjCo65oWLYBdu4CGDaVe4F27AsePy10VERFVgEFdF7VpIz0IpVUrqYNZWJh0WpyIiBSHQV1XBQQACQnSrVu5ucDjjwOLFgFCyF0ZERGVwaCuy9zdgW3bgFGjgJISYMYM6SEp7BFORKQYDOq6zt4e+O47YNkyaXrzZqBdO+C33+SujIiIwKAmQHp/9cSJwKFDQHCw9ECU3r2BadOAnBy5qyMiqtMY1PSvtm2BI0eAiAhAowE+/VTqJf7DD7x2TUQkEwY16XN2BqKjpfutmzcHMjKAkSOlB6QkJcldHRFRncOgpvL17QucOAEsWCBdu96xA+jYUepslpgod3VERHUGg5oq5uAAzJ8PnDwJjB4NWFkBcXFAp07AoEHS88M1GrmrJCKq1RjUVLVmzaSe4cnJwJgxUmBv2SKdDn/gAeCDD4AbN+SukoioVmJQk+EeeABYtUoK7ClTADc34O+/gVmzAD8/4IkngJgY6QEqRERkEiohLLM7b05ODtzc3JCdnQ1XV1e5y6mb8vOlHuGffy71FtdycAAGDJBOjz/2mPTmLiIi0qlOhjGoyTSSk6XQ/v574OxZ/WUdOkinyXv0ALp1A/jfi4jqOAY1yUcI4NgxYNMm4JdfgMOH9ZdbWQEPPSQFdqdO0vDgg4CNjSzlEhHJgUFNynHtmvQ88T17pJeA/P33ves4Okrh3bq19Eav1q2l8G7YUAp2IqJahkFNypWeLgX2H39I17WTkirufObgADRpIvU6b9IECAyUhkaNpMHTk0FORBbJYoK6sLAQkyZNQmxsLBwdHfHKK69g5syZBn2XQV1LaDTAuXPSw1VOnvx3+PtvoLS08u/a2gK+vlLL29cX8PaWBh8fwMsL8PDQH9zcpO8QEcmsOhkm64XBV199FUeOHMHu3btx8eJFhIeHIzAwEM8884ycZZE5WVlJLwIJDgaGDft3fnExcOmSFNjnzwMpKcDFi/8O165J66SlSYOhnJyAevWkDm0uLv+OnZ2lZdqxk5N0Sl6tlsaOjlILv6LB3l4a7OwAa2vTHyciqrNka1Hn5+fDy8sLW7duRa9evQAACxcuxM6dOxEfH1/l99miruPu3JHCOj1dGq5dkx66oh0yM4GsLGmcmWnee7utraXAtrW9d6ydtrExfLC21h+088qOrayk6fLG2umy39HOt7KS3p5W3vh+l5cd3z1UtByo/HvlDdrvlLd9Q9Yv7/uV1VbR98sbE1XAIlrUx48fR3FxMbp166abFxoairfffhsajQZWvPZIlbGzAwICpMEQJSVAdjbwzz/SkJMjhbd2yMuT7gvPz5emCwqA27elcUEBUFgoDbdvS0NRkfRZOy6rtPTf9ahuqyjgy05XFfKV/WOjovUrqsGU3zdk/eosN7Seuxm6verur6L/dpGR0nMizEi2oM7IyICXlxfs7Ox08+rXr4/CwkJkZmbC29tbrtKoNrKxkTqfeXqafttCSKfhi4qklr52XFwsjbXT2uHOHekfDtqhuFgK99JS/c/lLdfOv/uzRiMN2nnaz2XnlV1fCP11tJ/vHld3ednPZde9e7q8z9pjaej65X2n7Oey68ulbE1UO2RlmX2XsgV1QUEB7O3t9eZpPxcVFd2zflFRkd78nJycmi2QyFAqldTCL/OPTlKgqoLdkH8QVPT96mzfkO+Urbm879/9m8r7jYZu39DvVzau7vaqu9zU2zdmfe1027YwN9mC2sHB4Z5A1n5Wq9X3rB8VFYXIyEiz1EZEtRCvH5OFku1CsJ+fH27evImSkhLdvKtXr8LR0RHu7u73rD9nzhxkZ2frhrTq9PQlIiKyULIFdbt27WBra4uDBw/q5iUkJCAkJKTcjmT29vZwdXXVG4iIiGo72U59q9VqhIeH46WXXkJ0dDSuXLmCDz/8ENHR0XKVREREpDiyPvDk448/xsSJE9G7d2+4ubkhMjISQ4YMkbMkIiIiReGzvomIiMysOhnGp4oQEREpGIOaiIhIwRjURERECsagJiIiUjAGNRERkYIxqImIiBSMQU1ERKRgDGoiIiIFY1ATEREpGIOaiIhIwWR91vf90D75NCcnR+ZKiIiIqkebXYY8xdtigzo3NxcAEBAQIHMlRERExsnNzYWbm1ul61jsSzk0Gg3S09Ph4uIClUpV7e/n5OQgICAAaWlpfKlHNfHY3R8eP+Px2N0fHj/jmfrYCSGQm5uLhg0bwsqq8qvQFtuitrKygr+//31vx9XVlX9gjcRjd394/IzHY3d/ePyMZ8pjV1VLWoudyYiIiBSMQU1ERKRgdTao7e3tMX/+fNjb28tdisXhsbs/PH7G47G7Pzx+xpPz2FlsZzIiIqK6oM62qImIiCwBg5qIiEjB6lxQFxYWYuzYsXB3d0eDBg3w0UcfyV2Sol25cgXPPPMMPDw84OfnhxkzZqCwsBAAkJKSgr59+8LJyQktW7bE9u3bZa5WuQYOHIiIiAjd56NHj+Lhhx+GWq1GSEgIEhMT5StOoYqKijBp0iTUq1cP9evXx9y5c3VPceLxq1paWhoGDRoEV1dXNG7cGJ988oluGY9f+YqKitC6dWvEx8fr5lX199zOnTvRunVrqNVqPPLII7hw4YLJ66pzQf3qq6/iyJEj2L17N5YtW4bIyEj89NNPcpelSEIIPPPMMygoKMDvv/+OtWvXIi4uDvPmzYMQAk899RR8fX1x5MgRjBkzBk8//TQuXbokd9mKs3btWvzyyy+6z/n5+RgwYADCwsKQmJiIbt26YeDAgcjPz5exSuWZNm0aduzYgV9//RVr1qzBl19+iRUrVvD4GWj48OFwdnZGYmIiFi9ejNdffx0bNmzg8atAYWEhnn32WZw6dUo3r6q/5y5duoSnnnoK//nPf3D48GF4e3vjqaeeMuixoNUi6pC8vDzh4OAg9uzZo5v31ltviZ49e8pWk5IlJycLAOLq1au6eWvWrBENGzYUu3btEk5OTiIvL0+3rE+fPmL+/PkyVKpcmZmZwt/fX4SEhIjw8HAhhBBfffWVCAoKEhqNRgghhEajEc2aNRPR0dHyFaowmZmZwsbGRsTHx+vmRUVFif/85z88fgbIysoSAMSff/6pmzdkyBAxadIkHr9ynDp1SrRt21Y89NBDAoAuI6r6e27evHl6+ZGfny9cXFz0MsYU6lSL+vjx4yguLka3bt1080JDQ3Ho0CFoNBoZK1MmX19fbNu2DfXr19ebn52djYMHD6JDhw5wcnLSzQ8NDcWBAwfMXaaivfLKKxgzZgxatmypm3fw4EGEhobqHn2rUqnQvXt3HrsyEhIS4Obmhp49e+rmvfbaa/j66695/Azg6OgItVqN6OhoFBcX46+//sK+ffvQvn17Hr9y7N27F717977nGFT199zBgwfRo0cP3TK1Wo0OHTqY/FjWqaDOyMiAl5cX7OzsdPPq16+PwsJCZGZmyliZMrm7u6N///66zxqNBkuWLEGfPn2QkZGBhg0b6q1fv359XL582dxlKtbu3bvx22+/Yd68eXrzeeyqduHCBTRu3BirVq1CixYt0KRJE7z11lvQaDQ8fgZwcHDA0qVLsXz5cjg6OqJFixZ4/PHHMXbsWB6/ckycOBGLFi2CWq3Wm1/VsTLXsbTYZ30bo6Cg4J6b1bWfi4qK5CjJosyaNQtJSUk4fPgwFi1aVO6x5HGUFBYWYsKECVi6dCkcHR31llX055DH7l95eXk4d+4cli9fjujoaGRkZGDChAlQq9U8fgZKTk7GE088gZkzZ+LkyZOYMmUK+vbty+NXDVUdK3MdyzoV1A4ODvccQO3nu/8lRfpmz56NTz75BD/88ANat24NBweHe85CFBUV8Tj+T2RkJDp16qR3RkKroj+HPHb/srGxQU5ODtasWYPAwEAAUsedZcuWoXnz5jx+Vdi1axdWrlyJy5cvw9HREZ06dcKVK1ewcOFCNGnShMfPQFX9PVfR/8vu7u4mraNOnfr28/PDzZs3UVJSopt39epVODo6mvzA1iZTpkzBRx99hNWrV2Po0KEApGN59epVvfWuXr2KBg0ayFGi4qxduxYbN26Es7MznJ2dERMTg5iYGDg7O/PYGaBBgwZwcHDQhTQABAcHIy0tjcfPAImJiWjevLne2Zz27dvj4sWLPH7VUNWxMtexrFNB3a5dO9ja2uLgwYO6eQkJCQgJCanyfaB1VWRkJL744gusXbsWI0eO1M3v0qULkpKScPv2bd28hIQEdOnSRY4yFSc+Ph5//vknjh07hmPHjmHw4MEYPHgwjh07hi5dumD//v26WziEENi3bx+PXRldunRBYWEhzp49q5uXnJyMxo0b8/gZoGHDhjh//jzu3Lmjm3fmzBkEBQXx+FVDVX/PdenSBQkJCbplBQUFOHr0qOmPpUn7kFuACRMmiFatWok//vhDbNiwQbi6uorY2Fi5y1Kk06dPC2tra/HGG2+IjIwMvaGkpES0bNlSjBgxQpw8eVJERUUJZ2dncfHiRbnLVqTw8HDd7VnZ2dnC29tbTJ06VZw6dUpMnTpV+Pr66t0CQkIMHDhQdO3aVRw7dkxs27ZNeHt7i8WLF/P4GeDWrVvC19dXjBkzRvz111/i559/Fp6enuKLL77g8asCytyeVdXfcykpKcLBwUFERUWJkydPiuHDh4uHHnpId+ubyWoy6dYsQH5+vnj++eeFk5OTaNiwoVi0aJHcJSlWVFSUAFDuIIQQ586dEz169BD29vaiVatWYseOHTJXrFxlg1oIIQ4dOiTat28vHBwcROfOnUVSUpJ8xSnUrVu3xJgxY4Szs7Pw8fERkZGRur8AefyqdurUKdG3b1/h6uoqmjZtKhYtWsTjZ4CyQS1E1X/P/fLLL+KBBx4Qjo6Ook+fPuLChQsmr4lvzyIiIlIwXpglIiJSMAY1ERGRgjGoiYiIFIxBTUREpGAMaiIiIgVjUBMRESkYg5qIiEjBGNREREQKxqAmMpJKpdIbvL29MW7cOOTl5dX4voUQWLZsme5zREQEIiIiamRfvXr1woIFC3Sff/zxR1y/fr1G9nX39hcsWIBevXrV2L6ILAGfTEZkJJVKhdjYWHTr1g2lpaVIS0vDhAkT0K1bN3z++ec1uu+9e/eiV69euhcrZGdnAwDc3NxMvq9evXrpwvrixYto3LgxUlJS0LhxY5Pv6+7t5+Xl4c6dO/Dw8DD5vogsBVvURPfBw8MDvr6+8PPzQ5cuXTBnzhz88MMPNb7fu/997ebmViMhXdV+a3r7zs7ODGmq8xjURCbk5OSk97mwsBCzZ89GQEAAnJycMHjwYKSlpemWX758GcOHD4eHhwe8vLwwdepU3Yvoi4uLMW7cOHh5ecHZ2RmDBw/GlStXkJqait69ewOQWvXx8fF6p74XLFiAUaNGYeLEiXB1dYWPjw/ef/993T41Gg1ee+01eHl5wdPTEwsXLkSzZs0QHx9f5e8LCgrSjb/55hsAwIYNG9CyZUuo1Wp07twZe/fu1a3fq1cvTJkyBU2aNEGjRo2Qm5uLffv2ITQ0FGq1Gk5OThgwYAAyMjLK3f7dp74PHDiA0NBQODk5ISgoCF988YVuWUREBGbMmIERI0ZArVYjICAA3333nW757t270a5dOzg4OKBJkyZYvnx5lb+XSAkY1EQmcvPmTXz66acYPXq0bt5LL72E9evXY9WqVThw4ACKi4vx5JNPQqPR4M6dO3jkkUeQn5+PvXv3Yt26ddiyZQtmzZoFAFiyZAn27t2L7du348iRI8jNzcX06dMREBCA2NhYAEBGRga6det2Ty0//vgjHBwckJSUhFdffRWzZ8/Wvds5KioKq1atwpo1a7Bz505s3rwZFy5cMOg3/vHHH7rxiBEjcPz4cYSHh+ONN97AiRMnMHr0aDz++OM4f/687jvR0dFYvXo1NmzYAI1Gg4EDB6Jfv344deoUtm/fjvPnzyMqKqrc7ZeVnJyMRx55BD169EBSUhIWLFiAmTNnYsOGDbp1lixZgo4dO+LkyZMYOnQoJkyYgOzsbJSWlmLYsGEYNmwYzpw5g7feegsvv/wyTp8+bdDvJpKVyd/HRVRHABAODg7CyclJqNVqAUB4enqKc+fOCSGEyMrKElZWVuLXX3/VfSczM1Oo1Wqxbds2sWnTJqFWq0VWVpZu+datW4WNjY3Izc0VU6dOFQ899JDIzMwUQgiRmpoqEhMThRBC7NmzR5T937fsazTnz58vfH19RUlJiW65h4eHiImJEUII0bBhQ/HVV1/plp05c+aeV/uV1bNnTzF//nwhhPT+XQAiJSVFCCHE6NGjxYwZM/TWHzJkiG5ez549xYgRI3TLMjIyxIcffqj3vt7XXntNPPLII+Vuf/78+aJnz55CCCGmT58uunbtqrev2bNniy5duuiOQadOnXTLsrOzBQCxb98+kZmZKQCIL7/8Urd89+7deseeSKnYoia6DytXrsSxY8dw7Ngx7N+/H/3790f37t1x/fp1nD17FhqNBg8//LBufQ8PDwQHByM5ORnJycl44IEHUK9ePd3ybt26oaSkBOfPn8f48eORkZEBX19f9OvXD7/88gsefPBBg+oKCgqCtbW17rOLiwuKi4tx8+ZNpKenIyQkRLcsODhYr4bqSE5OxpIlS+Ds7Kwb4uLidK13AHqdznx9fREeHo5Fixbh+eefR6dOnfDhhx+itLTUoH2VPZaAdLySk5N1n5s3b66bdnV1BSBdQvDw8MDEiRMxbtw4BAYGYvLkyXBzczP6dxOZE4Oa6D74+fmhWbNmaN68Obp27Yro6GgUFBRg3bp1cHBwKPc7paWlKC0tLXe5NrBKS0vRqlUrpKamIiYmBg0aNMCcOXPQr18/gzp02dnZ3TNPCAEbGxvd9N3LjFFSUoLZs2fr/rFy7NgxnD59Wu/acdnfeeXKFbRp0wa7d+9Gx44dsWjRIsycOdOgfVV0vMqGfEW/GwCWLVuGkydPYvz48Th06BAefvhhbN261eDfSiQXBjWRCVlZWUGj0aC0tBRNmzaFjY0NDh48qFuemZmJc+fOITg4GMHBwTh79iyysrJ0yw8cOAAbGxs0bdoUq1atQlxcHIYNG4Zvv/0W27ZtQ0JCAq5fvw6VSmVUfe7u7mjYsCESExN18y5cuIBbt24Z9P279xscHIyUlBQ0a9ZMN6xYsaLCANywYQM8PDywefNmTJs2DWFhYbhw4YIuTCv7XcHBwXrHEpCOV3BwcJV1X716FZMmTUKzZs3w+uuv4/Dhw+jTpw9+/vnnKr9LJDcbuQsgsmRZWVm4evUqACA3N1d3Gnfw4MFwdnbGuHHjMHnyZHz55Zfw8PDQ9QB/9NFHYWNjgyZNmmDMmDF49913cfPmTUyZMgXPPfcc3N3dkZ2djbfffhteXl5o0qQJYmJi4O/vDy8vL13v8sTERLRq1apaNU+ZMgVvvvkmGjVqpOtpDlQeklra/R4/fhxeXl6YPn06wsLCEBISgoEDByIuLg4ff/wxdu/eXe73PT09cenSJezatQtBQUH48ccfERsbqzsVf/f2y3r55ZexePFizJ07FxEREThw4ACWLl2KJUuWVFm3h4cH1q9fDyEEZs6ciStXruDYsWMYMmRIld8lkp2M18eJLBoAvUGtVosePXqI3bt369bJz88XEydOFB4eHsLZ2Vk89dRT4tKlS7rlFy5cEAMGDBCOjo7Cx8dHTJ8+Xdy+fVsIIURpaamYNWuWaNCggbC3txfdu3cXSUlJQgghCgsLxaOPPirs7OxEbGzsPZ3JtB2wtAIDA0V0dLQQQoji4mIxdepU4ebmJjw8PMQHH3wgVCqV2L9/f7m/s2xnMiGkDmR2dnZi0aJFQgghvv/+exEcHCzs7OzEgw8+KNatW1fhd0tKSsRLL70k3N3dRb169US/fv3EokWLhKurqygsLLxn+3f/lp07d4r27dsLOzs70axZM/HFF1/olpU9BmX/G2k7yf3xxx+ia9euQq1Wi/r164u5c+eK0tLScn8zkZLwyWREdcy2bdvQsWNHeHt7AwBu3LgBHx+fGnvaGBHdHwY1UR3z9NNPo6SkBO+99x5UKhXefPNNXLx4UXcPMxEpCzuTEdUxS5YsgbW1Nbp164YuXbqgtLRU76EhRKQsbFETEREpGFvURERECsagJiIiUjAGNRERkYIxqImIiBSMQU1ERKRgDGoiIiIFY1ATEREpGIOaiIhIwRjURERECvb/a9WAIQLNQPEAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 训练过程可视化\n",
    "test_score = np.zeros((params[\"n_estimators\"],), dtype=np.float64)\n",
    "for i, y_pred in enumerate(reg.staged_predict(X_test)):\n",
    "    test_score[i] = reg.loss_(y_test, y_pred)\n",
    "\n",
    "fig = plt.figure(figsize=(5, 5))\n",
    "plt.subplot(1, 1, 1)\n",
    "plt.title(\"Deviance\")\n",
    "# plt.plot(np.arange(params[\"n_estimators\"]) + 1, reg.train_score_, \"b-\", label=\"Training Set Deviance\", )\n",
    "plt.plot(np.arange(params[\"n_estimators\"]) + 1, test_score, \"r-\", label=\"Test Set Deviance\")\n",
    "plt.legend(loc=\"upper right\")\n",
    "plt.xlabel(\"Boosting Iterations\")\n",
    "plt.ylabel(\"Deviance\")\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "63230b7c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The mean squared error (MSE) on test set: 0.0337\n",
      "The R^2 on test set: 0.9971\n"
     ]
    }
   ],
   "source": [
    "# 计算MSE和拟合优度R^2\n",
    "train_mse = mean_squared_error(y_train, reg.predict(X_train))\n",
    "test_mse = mean_squared_error(y_test, reg.predict(X_test))\n",
    "train_score = reg.score(X_train,y_train)\n",
    "test_score = reg.score(X_test,y_test)\n",
    "# print(\"The mean squared error (MSE) on train set: {:.4f}\".format(train_mse))\n",
    "print(\"The mean squared error (MSE) on test set: {:.4f}\".format(test_mse))\n",
    "# print(\"The R^2 on train set: {:.4f}\".format(train_score))\n",
    "print(\"The R^2 on test set: {:.4f}\".format(test_score))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b7bd5d14",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:PyTorch]",
   "language": "python",
   "name": "conda-env-PyTorch-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
